package entities;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

import constants.Constantes;
import vo.ArticuloVO;


@Entity
@Table(name="articulos")
@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
public class Articulo implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy= GenerationType.AUTO)
	@Column(name="idArticulo")
	private int id;
	private String nombre;
	private int codigo;
	private String descripcion;
	private String marca;
	private float precio;
	private String foto;
	private String origen;
	private boolean bestSeller;
	private Date ultimaActRanking;
	private int posicionRanking;
	
	public Articulo() {
	}

	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public String getMarca() {
		return marca;
	}
	public void setMarca(String marca) {
		this.marca = marca;
	}
	public float getPrecio() {
		return precio;
	}
	public void setPrecio(float precio) {
		this.precio = precio;
	}
	public String getFoto() {
		return foto;
	}
	public void setFoto(String foto) {
		this.foto = foto;
	}
	public String getOrigen() {
		return origen;
	}
	public void setOrigen(String origen) {
		this.origen = origen;
	}
	public boolean isBestSeller() {
		return bestSeller;
	}
	public void setBestSeller(boolean bestSeller) {
		this.bestSeller = bestSeller;
	}
	public Date getUltimaActRanking() {
		return ultimaActRanking;
	}
	public void setUltimaActRanking(Date ultimaActRanking) {
		this.ultimaActRanking = ultimaActRanking;
	}
	public int getPosicionRanking() {
		return posicionRanking;
	}
	public void setPosicionRanking(int posicionRanking) {
		this.posicionRanking = posicionRanking;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public ArticuloVO getVO() {
		
		ArticuloVO avo = new ArticuloVO();		
		avo.setCodigo(this.codigo);
		avo.setDescripcion(this.descripcion);
		avo.setMarca(this.marca);
		avo.setNombre(this.nombre);
		avo.setOrigen(this.origen);
		avo.setPrecio(this.precio);
		avo.setRanking(this.posicionRanking);
		avo.setFecha(this.ultimaActRanking);

		if(this instanceof Electrodomestico){
			avo.setCategoria(Constantes.CAT_ELECTRODOMESTICO);
		}else{
			if(this instanceof Infantil){
				avo.setCategoria(Constantes.CAT_INFANTIL);
			}else{
				if(this instanceof Moda){
					avo.setCategoria(Constantes.CAT_MODA);
				}else{
					if(this instanceof Mueble){
						avo.setCategoria(Constantes.CAT_MUEBLE);
					}else{
						avo.setCategoria("");
					}
				}
			}
		}
		
		return avo;
		
	}
	
	
}
